<?php
/*
	本插件：$this->model('tencent')->方法名();
	其他地方调用：model('jy_aixiaoyi/tencent')->方法名();
*/
namespace jy_aixiaoyi;
defined('BY_JYA') or exit('error');
class tencent extends \plugin{
	//发起http请求
	public function request($rurl,$post=null,$isres=false){
		$basic=$this->plugin_setting('basic');
		if(!$basic['tx_appid']){
			if($isres){
				$res['choices'][0]['text']='chatAI暂时无法使用，请联系管理员，设置好基本参数腾讯APPID';
				return $res;
			}else{
				exi('chatAI暂时无法使用，请联系管理员，设置好基本参数腾讯APPID','error');
			}
		}
		if(!$basic['tx_apisecret']){
			if($isres){
				$res['choices'][0]['text']='chatAI暂时无法使用，请联系管理员，设置好基本参数腾讯APP密钥';
				return $res;
			}else{
				exi('chatAI暂时无法使用，请联系管理员，设置好基本参数腾讯APP密钥','error');
			}
		}
		if(!$basic['tx_appkey']){
			if($isres){
				$res['choices'][0]['text']='chatAI暂时无法使用，请联系管理员，设置好基本参数大模型应用appkey';
				return $res;
			}else{
				exi('chatAI暂时无法使用，请联系管理员，设置好基本参数大模型应用appkey','error');
			}
		}
		$post=ijson_encode($post);
		$result=cfc('http')->ihttp_request($rurl,$post);
		if(is_error($result)){			
			$message="访问失败, 错误: {$result['message']}";
			if($return_error){
				return error($message);
			}else{
				exi($message,'error');
			}
		}
		$content=str_replace('event:reply','',$result['content']);
		$content=str_replace('event:token_stat','',$content);
		$content=str_replace('data:','',$content);
		$content=str_replace("\n",'',$content);
		$content=str_replace("}{",'},{',$content);
		$content='['.$content.']';
		$content=json_decode($content,true);
		$msg='';
		foreach($content as $cv){
			if($cv['type']=='reply' && $cv['payload'] && $cv['payload']['content']){
				$msg=$cv['payload']['content'];
			}
		}
		$data['result']=$msg;
		if(!$data['result']){
			$message='访问接口错误，以下为原始数据：'.$result['content'];
			if($return_error){
				return error($message);
			}else{
				exi($message,'error');
			}
		}
		return $data;
	}
	//获取聊天文本
	public function getmsg($content,$isexi=false) {
		$basic=$this->plugin_setting('basic');
		if($basic['isku']){
			$msg=$this->model('model')->getwenda($content);
			if($msg){
				return $msg;
			}
		}
		if(strpos($basic['apis'],'0') !== false){
			
		}else{
			return false;
		}
		//return '这里是测试数据！这里是测试数据！这里是测试数据！这里是测试数据！这里是测试数据！这里是测试数据！';
		$url = "https://wss.lke.cloud.tencent.com/v1/qbot/chat/sse";
		$post=array(
			'content'=>$content,
			'bot_app_key'=>$basic['tx_appkey'],
			'visitor_biz_id'=>$_SESSION['uid'],
			'session_id'=>session_id(),
		);
		$isres=$isexi?false:true;
		$res=$this->request($url,$post,$isres);
		//print_r($res);exit;
		if($res['error_code']){
			$res['message']=$res['error_msg']?:$res['error']['message'];
			if($isexi){
				exi('获取失败：'.$res['error_code'].','.$res['message'],'error');
			}else{
				return $basic['nomsg']?:'chatAI暂时无法回答您的问题！请联系管理员！';
			}
		}
		//$msg=$res['choices'][0]['text'];
		$msg=$res['result'];
		if($msg && $basic['upwenda']){
			$this->upwenda($content,$msg);
		}
		return $msg;
	}
	//机器人入库
	public function upwenda($title='',$msg=''){
		$wenda=pdo_get('jy_aixiaoyi_wenda',array('title'=>trim($title),'uniacid'=>$_SESSION['uniacid']));
		if($wenda['id'] || !$title || !$msg){
			return false;
		}
		$data=array(
			'uniacid'=>$_SESSION['uniacid'],
			'title'=>$title,
			'msg'=>$msg,
			'status'=>1,
			'createtime'=>TIMESTAMP
		);
		pdo_insert('jy_aixiaoyi_wenda',$data);
		return true;
	}
}
?>